// **************************************************************
// COPYRIGHT(c)2020, Xidian University
// All rights reserved.
//
// IP LIB INDEX :  
// IP Name      :      
// File name    :  
// Module name  :  
// Full name    :  
// Time         : 2020 
// Author       : Haoxiaofei 
// Email        : 1531804419@qq.com
// Data         : 
// Version      : V 1.0 
// 
// Abstract     :
// Called by    :  
// 
// Modification history
// -----------------------------------------------------------------
// 
// 
//
// *****************************************************************
// *******************
// TIMESCALE
// ******************* 
`timescale 1ns/1ps 

// *******************
// INFORMATION
// *******************

//*******************
//DEFINE(s)
//*******************

//*******************
//DEFINE MODULE PORT
//*******************
module pe_pipeline
    #(parameter RULE_N       = 8 ,
      parameter RULE_L       = 256,
      parameter MODIFY_L     = 16,
      parameter PE_X         = 64,
      parameter PE_NUM       = 1 ,
      parameter RAM_NUM      = 1,
      parameter PIPELINE_NUM = 1,
      parameter LOG2R        = 3,
      parameter LOG2X        = 6
    )
    (
    input wire clk,
    input wire rst_n,
    input wire[RULE_L-1:0] rule_in1,
    input wire modify_en,
    input wire[MODIFY_L-1:0] modify_value,
    input wire lookup_en,
    input wire[LOG2R-1:0] modify_loc,
    output reg[MODIFY_L-1:0] cpu_data_o,
    input wire[LOG2X-1:0] pe_num,
    output wire lookup_en_out,       //触发下一条流水线的查找
    input wire[RULE_N-1:0] valid_in1,
    output reg[RULE_N-1:0] bv_out1,
    output wire[3:0] rule_out1_0_bar,
    output wire[3:0] rule_out1_1_bar,
    output wire[3:0] rule_out1_2_bar,
    output wire[3:0] rule_out1_3_bar,
    output wire[3:0] rule_out1_4_bar,
    output wire[3:0] rule_out1_5_bar,
    output wire[3:0] rule_out1_6_bar,
    output wire[3:0] rule_out1_7_bar,
    output wire[3:0] rule_out1_8_bar,
    output wire[3:0] rule_out1_9_bar,
    output wire[3:0] rule_out1_10_bar,
    output wire[3:0] rule_out1_11_bar,
    output wire[3:0] rule_out1_12_bar,
    output wire[3:0] rule_out1_13_bar,
    output wire[3:0] rule_out1_14_bar,
    output wire[3:0] rule_out1_15_bar,
    output wire[3:0] rule_out1_16_bar,
    output wire[3:0] rule_out1_17_bar,
    output wire[3:0] rule_out1_18_bar,
    output wire[3:0] rule_out1_19_bar,
    output wire[3:0] rule_out1_20_bar,
    output wire[3:0] rule_out1_21_bar,
    output wire[3:0] rule_out1_22_bar,
    output wire[3:0] rule_out1_23_bar,
    output wire[3:0] rule_out1_24_bar,
    output wire[3:0] rule_out1_25_bar,
    output wire[3:0] rule_out1_26_bar,
    output wire[3:0] rule_out1_27_bar,
    output wire[3:0] rule_out1_28_bar,
    output wire[3:0] rule_out1_29_bar,
    output wire[3:0] rule_out1_30_bar,
    output wire[3:0] rule_out1_31_bar,
    output wire[3:0] rule_out1_32_bar,
    output wire[3:0] rule_out1_33_bar,
    output wire[3:0] rule_out1_34_bar,
    output wire[3:0] rule_out1_35_bar,
    output wire[3:0] rule_out1_36_bar,
    output wire[3:0] rule_out1_37_bar,
    output wire[3:0] rule_out1_38_bar,
    output wire[3:0] rule_out1_39_bar,
    output wire[3:0] rule_out1_40_bar,
    output wire[3:0] rule_out1_41_bar,
    output wire[3:0] rule_out1_42_bar,
    output wire[3:0] rule_out1_43_bar,
    output wire[3:0] rule_out1_44_bar,
    output wire[3:0] rule_out1_45_bar,
    output wire[3:0] rule_out1_46_bar,
    output wire[3:0] rule_out1_47_bar,
    output wire[3:0] rule_out1_48_bar,
    output wire[3:0] rule_out1_49_bar,
    output wire[3:0] rule_out1_50_bar,
    output wire[3:0] rule_out1_51_bar,
    output wire[3:0] rule_out1_52_bar,
    output wire[3:0] rule_out1_53_bar,
    output wire[3:0] rule_out1_54_bar,
    output wire[3:0] rule_out1_55_bar,
    output wire[3:0] rule_out1_56_bar,
    output wire[3:0] rule_out1_57_bar,
    output wire[3:0] rule_out1_58_bar,
    output wire[3:0] rule_out1_59_bar,
    output wire[3:0] rule_out1_60_bar,
    output wire[3:0] rule_out1_61_bar,
    output wire[3:0] rule_out1_62_bar,
    output wire[3:0] rule_out1_63_bar
    );

//*******************
//DEFINE LOCAL PARAMETER
//*******************
//parameter(s)

             
//*********************
//INNER SIGNAL DECLARATION
//*********************
//REGS
reg [PE_X-1:0] modify_en_r;

reg[MODIFY_L-1:0] modify_value_r;
reg[LOG2R-1:0] modify_loc_r;
reg[RULE_L-1- 4:0] rule_in1_d1   ;
reg[RULE_L-1- 8:0] rule_in1_d2   ;
reg[RULE_L-1-12:0] rule_in1_d3   ;
reg[RULE_L-1-16:0] rule_in1_d4   ;
reg[RULE_L-1-20:0] rule_in1_d5   ;
reg[RULE_L-1-24:0] rule_in1_d6   ;
reg[RULE_L-1-28:0] rule_in1_d7   ;
reg[RULE_L-1-32:0] rule_in1_d8   ;
reg[RULE_L-1-36:0] rule_in1_d9   ;
reg[RULE_L-1-40:0] rule_in1_d10  ;
reg[RULE_L-1-44:0] rule_in1_d11  ;
reg[RULE_L-1-48:0] rule_in1_d12  ;
reg[RULE_L-1-52:0] rule_in1_d13  ;
reg[RULE_L-1-56:0] rule_in1_d14  ;
reg[RULE_L-1-60:0] rule_in1_d15  ;
reg[RULE_L-1-64:0] rule_in1_d16  ;
reg[RULE_L-1-68:0] rule_in1_d17  ;
reg[RULE_L-1-72:0] rule_in1_d18  ;
reg[RULE_L-1-76:0] rule_in1_d19  ;
reg[RULE_L-1-80:0] rule_in1_d20  ;
reg[RULE_L-1-84:0] rule_in1_d21  ;
reg[RULE_L-1-88:0] rule_in1_d22  ;
reg[RULE_L-1-92:0] rule_in1_d23  ;
reg[RULE_L-1-96:0] rule_in1_d24  ;
reg[RULE_L-1-100:0] rule_in1_d25 ;
reg[RULE_L-1-104:0] rule_in1_d26 ;
reg[RULE_L-1-108:0] rule_in1_d27 ;
reg[RULE_L-1-112:0] rule_in1_d28 ;
reg[RULE_L-1-116:0] rule_in1_d29 ;
reg[RULE_L-1-120:0] rule_in1_d30 ;
reg[RULE_L-1-124:0] rule_in1_d31 ;
reg[RULE_L-1-128:0] rule_in1_d32 ;
reg[RULE_L-1-132:0] rule_in1_d33 ;
reg[RULE_L-1-136:0] rule_in1_d34 ;
reg[RULE_L-1-140:0] rule_in1_d35 ;
reg[RULE_L-1-144:0] rule_in1_d36 ;
reg[RULE_L-1-148:0] rule_in1_d37 ;
reg[RULE_L-1-152:0] rule_in1_d38 ;
reg[RULE_L-1-156:0] rule_in1_d39 ;
reg[RULE_L-1-160:0] rule_in1_d40 ;
reg[RULE_L-1-164:0] rule_in1_d41 ;
reg[RULE_L-1-168:0] rule_in1_d42 ;
reg[RULE_L-1-172:0] rule_in1_d43 ;
reg[RULE_L-1-176:0] rule_in1_d44 ;
reg[RULE_L-1-180:0] rule_in1_d45 ;
reg[RULE_L-1-184:0] rule_in1_d46 ;
reg[RULE_L-1-188:0] rule_in1_d47 ;
reg[RULE_L-1-192:0] rule_in1_d48 ;
reg[RULE_L-1-196:0] rule_in1_d49 ;
reg[RULE_L-1-200:0] rule_in1_d50 ;
reg[RULE_L-1-204:0] rule_in1_d51 ;
reg[RULE_L-1-208:0] rule_in1_d52 ;
reg[RULE_L-1-212:0] rule_in1_d53 ;
reg[RULE_L-1-216:0] rule_in1_d54 ;
reg[RULE_L-1-220:0] rule_in1_d55 ;
reg[RULE_L-1-224:0] rule_in1_d56 ;
reg[RULE_L-1-228:0] rule_in1_d57 ;
reg[RULE_L-1-232:0] rule_in1_d58 ;
reg[RULE_L-1-236:0] rule_in1_d59 ;
reg[RULE_L-1-240:0] rule_in1_d60 ;
reg[RULE_L-1-244:0] rule_in1_d61 ;
reg[RULE_L-1-248:0] rule_in1_d62 ;
reg[RULE_L-1-252:0] rule_in1_d63 ;
wire[PE_X-1:0] en_out1;

wire[RULE_N-1:0] bv_out1_0,bv_out1_1,bv_out1_2,bv_out1_3,bv_out1_4,bv_out1_5,bv_out1_6,bv_out1_7,bv_out1_8,bv_out1_9;
wire[RULE_N-1:0] bv_out1_10,bv_out1_11,bv_out1_12,bv_out1_13,bv_out1_14,bv_out1_15,bv_out1_16,bv_out1_17,bv_out1_18,bv_out1_19;
wire[RULE_N-1:0] bv_out1_20,bv_out1_21,bv_out1_22,bv_out1_23,bv_out1_24,bv_out1_25,bv_out1_26,bv_out1_27,bv_out1_28,bv_out1_29;
wire[RULE_N-1:0] bv_out1_30,bv_out1_31,bv_out1_32,bv_out1_33,bv_out1_34,bv_out1_35,bv_out1_36,bv_out1_37,bv_out1_38,bv_out1_39;
wire[RULE_N-1:0] bv_out1_40,bv_out1_41,bv_out1_42,bv_out1_43,bv_out1_44,bv_out1_45,bv_out1_46,bv_out1_47,bv_out1_48,bv_out1_49;
wire[RULE_N-1:0] bv_out1_50,bv_out1_51,bv_out1_52,bv_out1_53,bv_out1_54,bv_out1_55,bv_out1_56,bv_out1_57,bv_out1_58,bv_out1_59;
wire[RULE_N-1:0] bv_out1_60,bv_out1_61,bv_out1_62,bv_out1_63;


wire[MODIFY_L-1:0] cpu_data_o0,cpu_data_o1,cpu_data_o2,cpu_data_o3,cpu_data_o4,cpu_data_o5,cpu_data_o6,cpu_data_o7,cpu_data_o8,cpu_data_o9;
wire[MODIFY_L-1:0] cpu_data_o10,cpu_data_o11,cpu_data_o12,cpu_data_o13,cpu_data_o14,cpu_data_o15,cpu_data_o16,cpu_data_o17,cpu_data_o18,cpu_data_o19;
wire[MODIFY_L-1:0] cpu_data_o20,cpu_data_o21,cpu_data_o22,cpu_data_o23,cpu_data_o24,cpu_data_o25,cpu_data_o26,cpu_data_o27,cpu_data_o28,cpu_data_o29;
wire[MODIFY_L-1:0] cpu_data_o30,cpu_data_o31,cpu_data_o32,cpu_data_o33,cpu_data_o34,cpu_data_o35,cpu_data_o36,cpu_data_o37,cpu_data_o38,cpu_data_o39;
wire[MODIFY_L-1:0] cpu_data_o40,cpu_data_o41,cpu_data_o42,cpu_data_o43,cpu_data_o44,cpu_data_o45,cpu_data_o46,cpu_data_o47,cpu_data_o48,cpu_data_o49;
wire[MODIFY_L-1:0] cpu_data_o50,cpu_data_o51,cpu_data_o52,cpu_data_o53,cpu_data_o54,cpu_data_o55,cpu_data_o56,cpu_data_o57,cpu_data_o58,cpu_data_o59;
wire[MODIFY_L-1:0] cpu_data_o60,cpu_data_o61,cpu_data_o62,cpu_data_o63;

wire[3:0] rule_in1_0,rule_in1_1,rule_in1_2,rule_in1_3,rule_in1_4,rule_in1_5,rule_in1_6,rule_in1_7,rule_in1_8,rule_in1_9;
wire[3:0] rule_in1_10,rule_in1_11,rule_in1_12,rule_in1_13,rule_in1_14,rule_in1_15,rule_in1_16,rule_in1_17,rule_in1_18,rule_in1_19;
wire[3:0] rule_in1_20,rule_in1_21,rule_in1_22,rule_in1_23,rule_in1_24,rule_in1_25,rule_in1_26,rule_in1_27,rule_in1_28,rule_in1_29;
wire[3:0] rule_in1_30,rule_in1_31,rule_in1_32,rule_in1_33,rule_in1_34,rule_in1_35,rule_in1_36,rule_in1_37,rule_in1_38,rule_in1_39;
wire[3:0] rule_in1_40,rule_in1_41,rule_in1_42,rule_in1_43,rule_in1_44,rule_in1_45,rule_in1_46,rule_in1_47,rule_in1_48,rule_in1_49;
wire[3:0] rule_in1_50,rule_in1_51,rule_in1_52,rule_in1_53,rule_in1_54,rule_in1_55,rule_in1_56,rule_in1_57,rule_in1_58,rule_in1_59;
wire[3:0] rule_in1_60,rule_in1_61,rule_in1_62,rule_in1_63;


//*********************
//INSTANTCE MODULE
//*********************
pe1 #(
        .PE_NUM(0),
        .RAM_NUM(PE_X*PIPELINE_NUM)
    )U_pe0
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[0]),
    .modify_value(modify_value_r),
    .modify_loc(modify_loc_r),
    .bv_in1(valid_in1),
    .cpu_data_o(cpu_data_o0),
    .rule_in1(rule_in1_0),
    .lookup_en(lookup_en),  //为lookup_en打拍
    .lookup_en1(lookup_en), //查找使能信号

    .lookup_done1(lookup_en_out),  
    .en_out1(en_out1[0]),      //触发下一个pe块的查找
    .bv_out1(bv_out1_0),
    .rule_out1(rule_out1_0_bar)
    ); 
pe1 #(
        .PE_NUM(1),
        .RAM_NUM(PE_X*PIPELINE_NUM+1)
    )U_pe1
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[1]),
    .modify_value(modify_value_r),
    .cpu_data_o(cpu_data_o1),
    .lookup_en1(en_out1[0]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_0),
    .rule_in1(rule_in1_1),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[1]),
    .bv_out1(bv_out1_1),
    .rule_out1(rule_out1_1_bar)
    ); 
pe1 #(
        .PE_NUM(2),
        .RAM_NUM(PE_X*PIPELINE_NUM+2)
    )U_pe2
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[2]),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[1]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_1),
    .cpu_data_o(cpu_data_o2),
    .rule_in1(rule_in1_2),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[2]),
    .bv_out1(bv_out1_2),
    .rule_out1(rule_out1_2_bar)

    ); 
pe1 #(
        .PE_NUM(3),
        .RAM_NUM(PE_X*PIPELINE_NUM+3)
    )U_pe3
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[3]),
    .modify_value(modify_value_r),
    .cpu_data_o(cpu_data_o3),
    .lookup_en1(en_out1[2]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_2),
    .rule_in1(rule_in1_3),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[3]),
    .bv_out1(bv_out1_3),
    .rule_out1(rule_out1_3_bar)
    ); 
pe1 #(
        .PE_NUM(4),
        .RAM_NUM(PE_X*PIPELINE_NUM+4)
    )U_pe4
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[4]),
    .cpu_data_o(cpu_data_o4),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[3]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_3),
    .rule_in1(rule_in1_4),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[4]),
    .bv_out1(bv_out1_4),
    .rule_out1(rule_out1_4_bar)
    ); 
pe1 #(
        .PE_NUM(5),
        .RAM_NUM(PE_X*PIPELINE_NUM+5)
    )U_pe5
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[5]),
    .cpu_data_o(cpu_data_o5),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[4]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_4),
    .rule_in1(rule_in1_5),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[5]),
    .bv_out1(bv_out1_5),
    .rule_out1(rule_out1_5_bar)
    ); 
pe1 #(
        .PE_NUM(6),
        .RAM_NUM(PE_X*PIPELINE_NUM+6)
    )U_pe6
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[6]),
    .cpu_data_o(cpu_data_o6),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[5]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_5),
    .rule_in1(rule_in1_6),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[6]),
    .bv_out1(bv_out1_6),
    .rule_out1(rule_out1_6_bar)
    ); 

pe1 #(
        .PE_NUM(7),
        .RAM_NUM(PE_X*PIPELINE_NUM+7)
    )U_pe7
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[7]),
    .cpu_data_o(cpu_data_o7),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[6]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_6),
    .rule_in1(rule_in1_7),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[7]),
    .bv_out1(bv_out1_7),
    .rule_out1(rule_out1_7_bar)
    ); 
pe1 #(
        .PE_NUM(8),
        .RAM_NUM(PE_X*PIPELINE_NUM+8)
    )U_pe8
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[8]),
    .cpu_data_o(cpu_data_o8),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[7]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_7),
    .rule_in1(rule_in1_8),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[8]),
    .bv_out1(bv_out1_8),
    .rule_out1(rule_out1_8_bar)
    );
pe1 #(
        .PE_NUM(9),
        .RAM_NUM(PE_X*PIPELINE_NUM+9)
    )U_pe9
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[9]),
    .cpu_data_o(cpu_data_o9),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[8]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_8),
    .rule_in1(rule_in1_9),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[9]),
    .bv_out1(bv_out1_9),
    .rule_out1(rule_out1_9_bar)
    );
pe1 #(
        .PE_NUM(10),
        .RAM_NUM(PE_X*PIPELINE_NUM+10)
    )U_pe10
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[10]),
    .cpu_data_o(cpu_data_o10),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[9]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_9),
    .rule_in1(rule_in1_10),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[10]),
    .bv_out1(bv_out1_10),
    .rule_out1(rule_out1_10_bar)
    );
pe1 #(
        .PE_NUM(11),
        .RAM_NUM(PE_X*PIPELINE_NUM+11)
    )U_pe11
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[11]),
    .cpu_data_o(cpu_data_o11),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[10]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_10),
    .rule_in1(rule_in1_11),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[11]),
    .bv_out1(bv_out1_11),
    .rule_out1(rule_out1_11_bar)
    );
pe1 #(
        .PE_NUM(12),
        .RAM_NUM(PE_X*PIPELINE_NUM+12)
    )U_pe12
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[12]),
    .cpu_data_o(cpu_data_o12),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[11]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_11),
    .rule_in1(rule_in1_12),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[12]),
    .bv_out1(bv_out1_12),
    .rule_out1(rule_out1_12_bar)
    );
pe1 #(
        .PE_NUM(13),
        .RAM_NUM(PE_X*PIPELINE_NUM+13)
    )U_pe13
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[13]),
    .cpu_data_o(cpu_data_o13),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[12]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_12),
    .rule_in1(rule_in1_13),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[13]),
    .bv_out1(bv_out1_13),
    .rule_out1(rule_out1_13_bar)
    );
pe1 #(
        .PE_NUM(14),
        .RAM_NUM(PE_X*PIPELINE_NUM+14)
    )U_pe14
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[14]),
    .cpu_data_o(cpu_data_o14),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[13]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_13),
    .rule_in1(rule_in1_14),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[14]),
    .bv_out1(bv_out1_14),
    .rule_out1(rule_out1_14_bar)
    );
pe1 #(
        .PE_NUM(15),
        .RAM_NUM(PE_X*PIPELINE_NUM+15)
    )U_pe15
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[15]),
    .cpu_data_o(cpu_data_o15),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[14]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_14),
    .rule_in1(rule_in1_15),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[15]),
    .bv_out1(bv_out1_15),
    .rule_out1(rule_out1_15_bar)
    );
pe1 #(
        .PE_NUM(16),
        .RAM_NUM(PE_X*PIPELINE_NUM+16)
    )U_pe16
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[16]),
    .cpu_data_o(cpu_data_o16),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[15]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_15),
    .rule_in1(rule_in1_16),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[16]),
    .bv_out1(bv_out1_16),
    .rule_out1(rule_out1_16_bar)
    );
pe1 #(
        .PE_NUM(17),
        .RAM_NUM(PE_X*PIPELINE_NUM+17)
    )U_pe17
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[17]),
    .cpu_data_o(cpu_data_o17),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[16]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_16),
    .rule_in1(rule_in1_17),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[17]),
    .bv_out1(bv_out1_17),
    .rule_out1(rule_out1_17_bar)
    );
pe1 #(
        .PE_NUM(18),
        .RAM_NUM(PE_X*PIPELINE_NUM+18)
    )U_pe18
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[18]),
    .cpu_data_o(cpu_data_o18),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[17]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_17),
    .rule_in1(rule_in1_18),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[18]),
    .bv_out1(bv_out1_18),
    .rule_out1(rule_out1_18_bar)
    );
pe1 #(
        .PE_NUM(19),
        .RAM_NUM(PE_X*PIPELINE_NUM+19)
    )U_pe19
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[19]),
    .cpu_data_o(cpu_data_o19),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[18]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_18),
    .rule_in1(rule_in1_19),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[19]),
    .bv_out1(bv_out1_19),
    .rule_out1(rule_out1_19_bar)
    );
pe1 #(
        .PE_NUM(20),
        .RAM_NUM(PE_X*PIPELINE_NUM+20)
    )U_pe20
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[20]),
    .cpu_data_o(cpu_data_o20),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[19]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_19),
    .rule_in1(rule_in1_20),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[20]),
    .bv_out1(bv_out1_20),
    .rule_out1(rule_out1_20_bar)
    );
pe1 #(
        .PE_NUM(21),
        .RAM_NUM(PE_X*PIPELINE_NUM+21)
    )U_pe21
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[21]),
    .cpu_data_o(cpu_data_o21),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[20]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_20),
    .rule_in1(rule_in1_21),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[21]),
    .bv_out1(bv_out1_21),
    .rule_out1(rule_out1_21_bar)
    );
pe1 #(
        .PE_NUM(22),
        .RAM_NUM(PE_X*PIPELINE_NUM+22)
    )U_pe22
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[22]),
    .cpu_data_o(cpu_data_o22),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[21]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_21),
    .rule_in1(rule_in1_22),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[22]),
    .bv_out1(bv_out1_22),
    .rule_out1(rule_out1_22_bar)
    );
pe1 #(
        .PE_NUM(23),
        .RAM_NUM(PE_X*PIPELINE_NUM+23)
    )U_pe23
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[23]),
    .cpu_data_o(cpu_data_o23),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[22]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_22),
    .rule_in1(rule_in1_23),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[23]),
    .bv_out1(bv_out1_23),
    .rule_out1(rule_out1_23_bar)
    );
pe1 #(
        .PE_NUM(24),
        .RAM_NUM(PE_X*PIPELINE_NUM+24)
    )U_pe24
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[24]),
    .cpu_data_o(cpu_data_o24),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[23]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_23),
    .rule_in1(rule_in1_24),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[24]),
    .bv_out1(bv_out1_24),
    .rule_out1(rule_out1_24_bar)
    );
pe1 #(
        .PE_NUM(25),
        .RAM_NUM(PE_X*PIPELINE_NUM+25)
    )U_pe25
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[25]),
    .cpu_data_o(cpu_data_o25),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[24]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_24),
    .rule_in1(rule_in1_25),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[25]),
    .bv_out1(bv_out1_25),
    .rule_out1(rule_out1_25_bar)
    );
pe1 #(
        .PE_NUM(26),
        .RAM_NUM(PE_X*PIPELINE_NUM+26)
    )U_pe26
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[26]),
    .cpu_data_o(cpu_data_o26),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[25]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_25),
    .rule_in1(rule_in1_26),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[26]),
    .bv_out1(bv_out1_26),
    .rule_out1(rule_out1_26_bar)
    );
pe1 #(
        .PE_NUM(27),
        .RAM_NUM(PE_X*PIPELINE_NUM+27)
    )U_pe27
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[27]),
    .cpu_data_o(cpu_data_o27),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[26]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_26),
    .rule_in1(rule_in1_27),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[27]),
    .bv_out1(bv_out1_27),
    .rule_out1(rule_out1_27_bar)
    );
pe1 #(
        .PE_NUM(28),
        .RAM_NUM(PE_X*PIPELINE_NUM+28)
    )U_pe28
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[28]),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[27]),
    .cpu_data_o(cpu_data_o28),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_27),
    .rule_in1(rule_in1_28),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[28]),
    .bv_out1(bv_out1_28),
    .rule_out1(rule_out1_28_bar)
    );
pe1 #(
        .PE_NUM(29),
        .RAM_NUM(PE_X*PIPELINE_NUM+29)
    )U_pe29
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[29]),
    .cpu_data_o(cpu_data_o29),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[28]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_28),
    .rule_in1(rule_in1_29),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[29]),
    .bv_out1(bv_out1_29),
    .rule_out1(rule_out1_29_bar)
    );
pe1 #(
        .PE_NUM(30),
        .RAM_NUM(PE_X*PIPELINE_NUM+30)
    )U_pe30
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[30]),
    .cpu_data_o(cpu_data_o30),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[29]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_29),
    .rule_in1(rule_in1_30),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[30]),
    .bv_out1(bv_out1_30),
    .rule_out1(rule_out1_30_bar)
    );
pe1 #(
        .PE_NUM(31),
        .RAM_NUM(PE_X*PIPELINE_NUM+31)
    )U_pe31
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[31]),
    .cpu_data_o(cpu_data_o31),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[30]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_30),
    .rule_in1(rule_in1_31),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[31]),
    .bv_out1(bv_out1_31),
    .rule_out1(rule_out1_31_bar)
    );
pe1 #(
        .PE_NUM(32),
        .RAM_NUM(PE_X*PIPELINE_NUM+32)
    )U_pe32
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[32]),
    .cpu_data_o(cpu_data_o32),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[31]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_31),
    .rule_in1(rule_in1_32),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[32]),
    .bv_out1(bv_out1_32),
    .rule_out1(rule_out1_32_bar)
    );
pe1 #(
        .PE_NUM(33),
        .RAM_NUM(PE_X*PIPELINE_NUM+33)
    )U_pe33
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[33]),
    .cpu_data_o(cpu_data_o33),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[32]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_32),
    .rule_in1(rule_in1_33),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[33]),
    .bv_out1(bv_out1_33),
    .rule_out1(rule_out1_33_bar)
    );
pe1 #(
        .PE_NUM(34),
        .RAM_NUM(PE_X*PIPELINE_NUM+34)
    )U_pe34
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[34]),
    .cpu_data_o(cpu_data_o34),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[33]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_33),
    .rule_in1(rule_in1_34),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[34]),
    .bv_out1(bv_out1_34),
    .rule_out1(rule_out1_34_bar)
    );
pe1 #(
        .PE_NUM(35),
        .RAM_NUM(PE_X*PIPELINE_NUM+35)
    )U_pe35
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[35]),
    .cpu_data_o(cpu_data_o35),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[34]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_34),
    .rule_in1(rule_in1_35),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[35]),
    .bv_out1(bv_out1_35),
    .rule_out1(rule_out1_35_bar)
    );
pe1 #(
        .PE_NUM(36),
        .RAM_NUM(PE_X*PIPELINE_NUM+36)
    )U_pe36
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[36]),
    .cpu_data_o(cpu_data_o36),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[35]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_35),
    .rule_in1(rule_in1_36),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[36]),
    .bv_out1(bv_out1_36),
    .rule_out1(rule_out1_36_bar)
    );
pe1 #(
        .PE_NUM(37),
        .RAM_NUM(PE_X*PIPELINE_NUM+37)
    )U_pe37
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[37]),
    .cpu_data_o(cpu_data_o37),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[36]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_36),
    .rule_in1(rule_in1_37),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[37]),
    .bv_out1(bv_out1_37),
    .rule_out1(rule_out1_37_bar)
    );
pe1 #(
        .PE_NUM(38),
        .RAM_NUM(PE_X*PIPELINE_NUM+38)
    )U_pe38
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[38]),
    .cpu_data_o(cpu_data_o38),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[37]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_37),
    .rule_in1(rule_in1_38),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[38]),
    .bv_out1(bv_out1_38),
    .rule_out1(rule_out1_38_bar)
    );
pe1 #(
        .PE_NUM(39),
        .RAM_NUM(PE_X*PIPELINE_NUM+39)
    )U_pe39
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[39]),
    .cpu_data_o(cpu_data_o39),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[38]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_38),
    .rule_in1(rule_in1_39),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[39]),
    .bv_out1(bv_out1_39),
    .rule_out1(rule_out1_39_bar)
    );
pe1 #(
        .PE_NUM(40),
        .RAM_NUM(PE_X*PIPELINE_NUM+40)
    )U_pe40
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[40]),
    .cpu_data_o(cpu_data_o40),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[39]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_39),
    .rule_in1(rule_in1_40),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[40]),
    .bv_out1(bv_out1_40),
    .rule_out1(rule_out1_40_bar)
    );
pe1 #(
        .PE_NUM(41),
        .RAM_NUM(PE_X*PIPELINE_NUM+41)
    )U_pe41
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[41]),
    .cpu_data_o(cpu_data_o41),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[40]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_40),
    .rule_in1(rule_in1_41),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[41]),
    .bv_out1(bv_out1_41),
    .rule_out1(rule_out1_41_bar)
    );
pe1 #(
        .PE_NUM(42),
        .RAM_NUM(PE_X*PIPELINE_NUM+42)
    )U_pe42
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[42]),
    .cpu_data_o(cpu_data_o42),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[41]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_41),
    .rule_in1(rule_in1_42),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[42]),
    .bv_out1(bv_out1_42),
    .rule_out1(rule_out1_42_bar)
    );
pe1 #(
        .PE_NUM(43),
        .RAM_NUM(PE_X*PIPELINE_NUM+43)
    )U_pe43
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[43]),
    .cpu_data_o(cpu_data_o43),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[42]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_42),
    .rule_in1(rule_in1_43),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[43]),
    .bv_out1(bv_out1_43),
    .rule_out1(rule_out1_43_bar)
    );
pe1 #(
        .PE_NUM(44),
        .RAM_NUM(PE_X*PIPELINE_NUM+44)
    )U_pe44
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[44]),
    .cpu_data_o(cpu_data_o44),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[43]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_43),
    .rule_in1(rule_in1_44),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[44]),
    .bv_out1(bv_out1_44),
    .rule_out1(rule_out1_44_bar)
    );
pe1 #(
        .PE_NUM(45),
        .RAM_NUM(PE_X*PIPELINE_NUM+45)
    )U_pe45
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[45]),
    .cpu_data_o(cpu_data_o45),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[44]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_44),
    .rule_in1(rule_in1_45),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[45]),
    .bv_out1(bv_out1_45),
    .rule_out1(rule_out1_45_bar)
    );
pe1 #(
        .PE_NUM(46),
        .RAM_NUM(PE_X*PIPELINE_NUM+46)
    )U_pe46
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[46]),
    .cpu_data_o(cpu_data_o46),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[45]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_45),
    .rule_in1(rule_in1_46),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[46]),
    .bv_out1(bv_out1_46),
    .rule_out1(rule_out1_46_bar)
    );
pe1 #(
        .PE_NUM(47),
        .RAM_NUM(PE_X*PIPELINE_NUM+47)
    )U_pe47
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[47]),
    .cpu_data_o(cpu_data_o47),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[46]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_46),
    .rule_in1(rule_in1_47),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[47]),
    .bv_out1(bv_out1_47),
    .rule_out1(rule_out1_47_bar)
    );
pe1 #(
        .PE_NUM(48),
        .RAM_NUM(PE_X*PIPELINE_NUM+48)
    )U_pe48
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[48]),
    .cpu_data_o(cpu_data_o48),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[47]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_47),
    .rule_in1(rule_in1_48),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[48]),
    .bv_out1(bv_out1_48),
    .rule_out1(rule_out1_48_bar)
    );
pe1 #(
        .PE_NUM(49),
        .RAM_NUM(PE_X*PIPELINE_NUM+49)
    )U_pe49
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[49]),
    .cpu_data_o(cpu_data_o49),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[48]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_48),
    .rule_in1(rule_in1_49),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[49]),
    .bv_out1(bv_out1_49),
    .rule_out1(rule_out1_49_bar)
    );
pe1 #(
        .PE_NUM(50),
        .RAM_NUM(PE_X*PIPELINE_NUM+50)
    )U_pe50
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[50]),
    .cpu_data_o(cpu_data_o50),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[49]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_49),
    .rule_in1(rule_in1_50),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[50]),
    .bv_out1(bv_out1_50),
    .rule_out1(rule_out1_50_bar)
    );
pe1 #(
        .PE_NUM(51),
        .RAM_NUM(PE_X*PIPELINE_NUM+51)
    )U_pe51
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[51]),
    .cpu_data_o(cpu_data_o51),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[50]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_50),
    .rule_in1(rule_in1_51),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[51]),
    .bv_out1(bv_out1_51),
    .rule_out1(rule_out1_51_bar)
    );
pe1 #(
        .PE_NUM(52),
        .RAM_NUM(PE_X*PIPELINE_NUM+52)
    )U_pe52
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[52]),
    .cpu_data_o(cpu_data_o52),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[51]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_51),
    .rule_in1(rule_in1_52),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[52]),
    .bv_out1(bv_out1_52),
    .rule_out1(rule_out1_52_bar)
    );
pe1 #(
        .PE_NUM(53),
        .RAM_NUM(PE_X*PIPELINE_NUM+53)
    )U_pe53
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[53]),
    .cpu_data_o(cpu_data_o53),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[52]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_52),
    .rule_in1(rule_in1_53),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[53]),
    .bv_out1(bv_out1_53),
    .rule_out1(rule_out1_53_bar)
    );
pe1 #(
        .PE_NUM(54),
        .RAM_NUM(PE_X*PIPELINE_NUM+54)
    )U_pe54
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[54]),
    .cpu_data_o(cpu_data_o54),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[53]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_53),
    .rule_in1(rule_in1_54),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[54]),
    .bv_out1(bv_out1_54),
    .rule_out1(rule_out1_54_bar)
    );
pe1 #(
        .PE_NUM(55),
        .RAM_NUM(PE_X*PIPELINE_NUM+55)
    )U_pe55
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[55]),
    .cpu_data_o(cpu_data_o55),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[54]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_54),
    .rule_in1(rule_in1_55),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[55]),
    .bv_out1(bv_out1_55),
    .rule_out1(rule_out1_55_bar)
    );
pe1 #(
        .PE_NUM(56),
        .RAM_NUM(PE_X*PIPELINE_NUM+56)
    )U_pe56
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[56]),
    .cpu_data_o(cpu_data_o56),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[55]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_55),
    .rule_in1(rule_in1_56),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[56]),
    .bv_out1(bv_out1_56),
    .rule_out1(rule_out1_56_bar)
    );
pe1 #(
        .PE_NUM(57),
        .RAM_NUM(PE_X*PIPELINE_NUM+57)
    )U_pe57
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[57]),
    .cpu_data_o(cpu_data_o57),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[56]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_56),
    .rule_in1(rule_in1_57),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[57]),
    .bv_out1(bv_out1_57),
    .rule_out1(rule_out1_57_bar)
    );
pe1 #(
        .PE_NUM(58),
        .RAM_NUM(PE_X*PIPELINE_NUM+58)
    )U_pe58
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[58]),
    .cpu_data_o(cpu_data_o58),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[57]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_57),
    .rule_in1(rule_in1_58),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[58]),
    .bv_out1(bv_out1_58),
    .rule_out1(rule_out1_58_bar)
    );
pe1 #(
        .PE_NUM(59),
        .RAM_NUM(PE_X*PIPELINE_NUM+59)
    )U_pe59
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[59]),
    .cpu_data_o(cpu_data_o59),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[58]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_58),
    .rule_in1(rule_in1_59),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[59]),
    .bv_out1(bv_out1_59),
    .rule_out1(rule_out1_59_bar)
    );
pe1 #(
        .PE_NUM(60),
        .RAM_NUM(PE_X*PIPELINE_NUM+60)
    )U_pe60
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[60]),
    .cpu_data_o(cpu_data_o60),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[59]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_59),
    .rule_in1(rule_in1_60),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[60]),
    .bv_out1(bv_out1_60),
    .rule_out1(rule_out1_60_bar)
    );
pe1 #(
        .PE_NUM(61),
        .RAM_NUM(PE_X*PIPELINE_NUM+61)
    )U_pe61
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[61]),
    .cpu_data_o(cpu_data_o61),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[60]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_60),
    .rule_in1(rule_in1_61),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[61]),
    .bv_out1(bv_out1_61),
    .rule_out1(rule_out1_61_bar)
    );
pe1 #(
        .PE_NUM(62),
        .RAM_NUM(PE_X*PIPELINE_NUM+62)
    )U_pe62
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[62]),
    .cpu_data_o(cpu_data_o62),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[61]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_61),
    .rule_in1(rule_in1_62),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[62]),
    .bv_out1(bv_out1_62),
    .rule_out1(rule_out1_62_bar)
    );
pe1 #(
        .PE_NUM(63),
        .RAM_NUM(PE_X*PIPELINE_NUM+63)
    )U_pe63
    (
    .clk(clk),
    .rst_n(rst_n),
    .modify_en(modify_en_r[63]),
    .cpu_data_o(cpu_data_o63),
    .modify_value(modify_value_r),
    .lookup_en1(en_out1[62]),
    .modify_loc(modify_loc_r),
    .bv_in1(bv_out1_62),
    .rule_in1(rule_in1_63),

    .lookup_en(1'b1),
    .lookup_done1(),
    .en_out1(en_out1[63]),
    .bv_out1(bv_out1_63),
    .rule_out1(rule_out1_63_bar)
    );


//*********************
//MAIN CORE
//********************* 
always@(posedge clk or negedge rst_n)
  begin
    if(~rst_n)
      bv_out1 <= 0;
    else 
      bv_out1 <= bv_out1_63 ;
  end

always@(posedge clk or negedge rst_n)
  begin
    if(~rst_n)
      modify_value_r <= 16'h0;
    else 
      modify_value_r <= modify_value;
  end
always@(posedge clk or negedge rst_n)
  begin
    if(~rst_n)
      modify_loc_r <= 3'b0;
    else 
      modify_loc_r <= modify_loc;
  end
always@(posedge clk or negedge rst_n)
  begin
    if(~rst_n)
      begin
        modify_en_r <= 63'b0;
      end
    else if(modify_en)
      case(pe_num)
        0:
          begin
            modify_en_r <= 64'h0000000000000001;
          end 
        1:
          begin
            modify_en_r <= 64'h0000000000000002;
          end 
        2:
          begin
            modify_en_r <= 64'h0000000000000004;
          end 
        3:
          begin
            modify_en_r <= 64'h0000000000000008;
          end 
        4:
          begin
            modify_en_r <= 64'h0000000000000010;
          end 
        5:
          begin
            modify_en_r <= 64'h0000000000000020;
          end 
        6:
          begin
            modify_en_r <= 64'h0000000000000040;
          end 
        7:
          begin
            modify_en_r <= 64'h0000000000000080;
          end 
        8:
          begin
            modify_en_r <= 64'h0000000000000100;
          end 
        9:
          begin
            modify_en_r <= 64'h0000000000000200;
          end 
        10:
          begin
            modify_en_r <= 64'h0000000000000400;
          end 
        11:
          begin
            modify_en_r <= 64'h0000000000000800;
          end 
        12:
          begin
            modify_en_r <= 64'h0000000000001000;
          end 
        13:
          begin
            modify_en_r <= 64'h0000000000002000;
          end 
        14:
          begin
            modify_en_r <= 64'h0000000000004000;
          end 
        15:
          begin
            modify_en_r <= 64'h0000000000008000;
          end 
        16:
          begin
            modify_en_r <= 64'h0000000000010000;
          end 
        17:
          begin
            modify_en_r <= 64'h0000000000020000;
          end 
        18:
          begin
            modify_en_r <= 64'h0000000000040000;
          end 
        19:
          begin
            modify_en_r <= 64'h0000000000080000;
          end 
        20:
          begin
            modify_en_r <= 64'h0000000000100000;
          end 
        21:
          begin
            modify_en_r <= 64'h0000000000200000;
          end 
        22:
          begin
            modify_en_r <= 64'h0000000000400000;
          end 
        23:
          begin
            modify_en_r <= 64'h0000000000800000;
          end 
        24:
          begin
            modify_en_r <= 64'h0000000001000000;
          end 
        25:
          begin
            modify_en_r <= 64'h0000000002000000;
          end 
        26:
          begin
            modify_en_r <= 64'h0000000004000000;
          end 
        27:
          begin
            modify_en_r <= 64'h0000000008000000;
          end 
        28:
          begin
            modify_en_r <= 64'h0000000010000000;
          end 
        29:
          begin
            modify_en_r <= 64'h0000000020000000;
          end 
        30:
          begin
            modify_en_r <= 64'h0000000040000000;
          end 
        31:
          begin
            modify_en_r <= 64'h0000000080000000;
          end 
        32:
          begin
            modify_en_r <= 64'h0000000100000000;
          end 
        33:
          begin
            modify_en_r <= 64'h0000000200000000;
          end 
        34:
          begin
            modify_en_r <= 64'h0000000400000000;
          end 
        35:
          begin
            modify_en_r <= 64'h0000000800000000;
          end 
        36:
          begin
            modify_en_r <= 64'h0000001000000000;
          end 
        37:
          begin
            modify_en_r <= 64'h0000002000000000;
          end 
        38:
          begin
            modify_en_r <= 64'h0000004000000000;
          end
        39:
          begin
            modify_en_r <= 64'h0000008000000000;
          end 
        40:
          begin
            modify_en_r <= 64'h0000010000000000;
          end 
        41:
          begin
            modify_en_r <= 64'h0000020000000000;
          end 
        42:
          begin
            modify_en_r <= 64'h0000040000000000;
          end 
        43:
          begin
            modify_en_r <= 64'h0000080000000000;
          end 
        44:
          begin
            modify_en_r <= 64'h0000100000000000;
          end 
        45:
          begin
            modify_en_r <= 64'h0000200000000000;
          end 
        46:
          begin
            modify_en_r <= 64'h0000400000000000;
          end 
        47:
          begin
            modify_en_r <= 64'h0000800000000000;
          end 
        48:
          begin
            modify_en_r <= 64'h0001000000000000;
          end 
        49:
          begin
            modify_en_r <= 64'h0002000000000000;
          end 
        50:
          begin
            modify_en_r <= 64'h0004000000000000;
          end 
        51:
          begin
            modify_en_r <= 64'h0008000000000000;
          end 
        52:
          begin
            modify_en_r <= 64'h0010000000000000;
          end 
        53:
          begin
            modify_en_r <= 64'h0020000000000000;
          end 
        54:
          begin
            modify_en_r <= 64'h0040000000000000;
          end 
        55:
          begin
            modify_en_r <= 64'h0080000000000000;
          end 
        56:
          begin
            modify_en_r <= 64'h0100000000000000;
          end 
        57:
          begin
            modify_en_r <= 64'h0200000000000000;
          end 
        58:
          begin
            modify_en_r <= 64'h0400000000000000;
          end 
        59:
          begin
            modify_en_r <= 64'h0800000000000000;
          end 
        60:
          begin
            modify_en_r <= 64'h1000000000000000;
          end 
        61:
          begin
            modify_en_r <= 64'h2000000000000000;
          end 
        62:
          begin
            modify_en_r <= 64'h4000000000000000;
          end 
        63:
          begin
            modify_en_r <= 64'h8000000000000000;
          end 
        default:
          begin
            modify_en_r <= 64'b0;
          end
      endcase
    else
      begin
        modify_en_r <= 64'b0;
      end
  end
reg[5:0] pe_num_r;
always@(posedge clk or negedge rst_n)
begin
  if(~rst_n)
    pe_num_r <= 6'd0;
  else 
    pe_num_r <= pe_num;
end
always@(posedge clk or negedge rst_n)
begin
  if(~rst_n)
    cpu_data_o <= 16'h0;
  else 
    case(pe_num_r)
    6'd0:cpu_data_o <= cpu_data_o0;
    6'd1:cpu_data_o <= cpu_data_o1;
    6'd2:cpu_data_o <= cpu_data_o2;
    6'd3:cpu_data_o <= cpu_data_o3;
    6'd4:cpu_data_o <= cpu_data_o4;
    6'd5:cpu_data_o <= cpu_data_o5;
    6'd6:cpu_data_o <= cpu_data_o6;
    6'd7:cpu_data_o <= cpu_data_o7;
    6'd8:cpu_data_o <= cpu_data_o8;
    6'd9:cpu_data_o <= cpu_data_o9;
    6'd10:cpu_data_o <= cpu_data_o10;
    6'd11:cpu_data_o <= cpu_data_o11;
    6'd12:cpu_data_o <= cpu_data_o12;
    6'd13:cpu_data_o <= cpu_data_o13;
    6'd14:cpu_data_o <= cpu_data_o14;
    6'd15:cpu_data_o <= cpu_data_o15;
    6'd16:cpu_data_o <= cpu_data_o16;
    6'd17:cpu_data_o <= cpu_data_o17;
    6'd18:cpu_data_o <= cpu_data_o18;
    6'd19:cpu_data_o <= cpu_data_o19;
    6'd20:cpu_data_o <= cpu_data_o20;
    6'd21:cpu_data_o <= cpu_data_o21;
    6'd22:cpu_data_o <= cpu_data_o22;
    6'd23:cpu_data_o <= cpu_data_o23;
    6'd24:cpu_data_o <= cpu_data_o24;
    6'd25:cpu_data_o <= cpu_data_o25;
    6'd26:cpu_data_o <= cpu_data_o26;
    6'd27:cpu_data_o <= cpu_data_o27;
    6'd28:cpu_data_o <= cpu_data_o28;
    6'd29:cpu_data_o <= cpu_data_o29;
    6'd30:cpu_data_o <= cpu_data_o30;
    6'd31:cpu_data_o <= cpu_data_o31;
    6'd32:cpu_data_o <= cpu_data_o32;
    6'd33:cpu_data_o <= cpu_data_o33;
    6'd34:cpu_data_o <= cpu_data_o34;
    6'd35:cpu_data_o <= cpu_data_o35;
    6'd36:cpu_data_o <= cpu_data_o36;
    6'd37:cpu_data_o <= cpu_data_o37;
    6'd38:cpu_data_o <= cpu_data_o38;
    6'd39:cpu_data_o <= cpu_data_o39;
    6'd40:cpu_data_o <= cpu_data_o40;
    6'd41:cpu_data_o <= cpu_data_o41;
    6'd42:cpu_data_o <= cpu_data_o42;
    6'd43:cpu_data_o <= cpu_data_o43;
    6'd44:cpu_data_o <= cpu_data_o44;
    6'd45:cpu_data_o <= cpu_data_o45;
    6'd46:cpu_data_o <= cpu_data_o46;
    6'd47:cpu_data_o <= cpu_data_o47;
    6'd48:cpu_data_o <= cpu_data_o48;
    6'd49:cpu_data_o <= cpu_data_o49;
    6'd50:cpu_data_o <= cpu_data_o50;
    6'd51:cpu_data_o <= cpu_data_o51;
    6'd52:cpu_data_o <= cpu_data_o52;
    6'd53:cpu_data_o <= cpu_data_o53;
    6'd54:cpu_data_o <= cpu_data_o54;
    6'd55:cpu_data_o <= cpu_data_o55;
    6'd56:cpu_data_o <= cpu_data_o56;
    6'd57:cpu_data_o <= cpu_data_o57;
    6'd58:cpu_data_o <= cpu_data_o58;
    6'd59:cpu_data_o <= cpu_data_o59;
    6'd60:cpu_data_o <= cpu_data_o60;
    6'd61:cpu_data_o <= cpu_data_o61;
    6'd62:cpu_data_o <= cpu_data_o62;
    6'd63:cpu_data_o <= cpu_data_o63;
    default:cpu_data_o <= 16'h0;
    endcase
end
always @(posedge clk or negedge rst_n) 
begin
    if (~rst_n) begin
        // reset
        rule_in1_d1   <= 0;
        rule_in1_d2   <= 0;
        rule_in1_d3   <= 0;
        rule_in1_d4   <= 0;
        rule_in1_d5   <= 0;
        rule_in1_d6   <= 0;
        rule_in1_d7   <= 0;
        rule_in1_d8   <= 0;
        rule_in1_d9   <= 0;
        rule_in1_d10  <= 0;
        rule_in1_d11  <= 0;
        rule_in1_d12  <= 0;
        rule_in1_d13  <= 0;
        rule_in1_d14  <= 0;
        rule_in1_d15  <= 0;
        rule_in1_d16  <= 0;
        rule_in1_d17  <= 0;
        rule_in1_d18  <= 0;
        rule_in1_d19  <= 0;
        rule_in1_d20  <= 0;
        rule_in1_d21  <= 0;
        rule_in1_d22  <= 0;
        rule_in1_d23  <= 0;
        rule_in1_d24  <= 0;
        rule_in1_d25  <= 0;
        rule_in1_d26  <= 0;
        rule_in1_d27  <= 0;
        rule_in1_d28  <= 0;
        rule_in1_d29  <= 0;
        rule_in1_d30  <= 0;
        rule_in1_d31  <= 0;
        rule_in1_d32  <= 0;
        rule_in1_d33  <= 0;
        rule_in1_d34  <= 0;
        rule_in1_d35  <= 0;
        rule_in1_d36  <= 0;
        rule_in1_d37  <= 0;
        rule_in1_d38  <= 0;
        rule_in1_d39  <= 0;
        rule_in1_d40  <= 0;
        rule_in1_d41  <= 0;
        rule_in1_d42  <= 0;
        rule_in1_d43  <= 0;
        rule_in1_d44  <= 0;
        rule_in1_d45  <= 0;
        rule_in1_d46  <= 0;
        rule_in1_d47  <= 0;
        rule_in1_d48  <= 0;
        rule_in1_d49  <= 0;
        rule_in1_d50  <= 0;
        rule_in1_d51  <= 0;
        rule_in1_d52  <= 0;
        rule_in1_d53  <= 0;
        rule_in1_d54  <= 0;
        rule_in1_d55  <= 0;
        rule_in1_d56  <= 0;
        rule_in1_d57  <= 0;
        rule_in1_d58  <= 0;
        rule_in1_d59  <= 0;
        rule_in1_d60  <= 0;
        rule_in1_d61  <= 0;
        rule_in1_d62  <= 0;
        rule_in1_d63  <= 0;
    end
    else  begin
        rule_in1_d1   <= rule_in1    [RULE_L-1- 4:0] ;
        rule_in1_d2   <= rule_in1_d1 [RULE_L-1- 8:0] ;
        rule_in1_d3   <= rule_in1_d2 [RULE_L-1-12:0] ;
        rule_in1_d4   <= rule_in1_d3 [RULE_L-1-16:0] ;
        rule_in1_d5   <= rule_in1_d4 [RULE_L-1-20:0] ;
        rule_in1_d6   <= rule_in1_d5 [RULE_L-1-24:0] ;
        rule_in1_d7   <= rule_in1_d6 [RULE_L-1-28:0] ;
        rule_in1_d8   <= rule_in1_d7 [RULE_L-1-32:0] ;
        rule_in1_d9   <= rule_in1_d8 [RULE_L-1-36:0] ;
        rule_in1_d10  <= rule_in1_d9 [RULE_L-1-40:0] ;
        rule_in1_d11  <= rule_in1_d10[RULE_L-1-44:0] ;
        rule_in1_d12  <= rule_in1_d11[RULE_L-1-48:0] ;
        rule_in1_d13  <= rule_in1_d12[RULE_L-1-52:0] ;
        rule_in1_d14  <= rule_in1_d13[RULE_L-1-56:0] ;
        rule_in1_d15  <= rule_in1_d14[RULE_L-1-60:0] ;
        rule_in1_d16  <= rule_in1_d15[RULE_L-1-64:0] ;
        rule_in1_d17  <= rule_in1_d16[RULE_L-1-68:0] ;
        rule_in1_d18  <= rule_in1_d17[RULE_L-1-72:0] ;
        rule_in1_d19  <= rule_in1_d18[RULE_L-1-76:0] ;
        rule_in1_d20  <= rule_in1_d19[RULE_L-1-80:0] ;
        rule_in1_d21  <= rule_in1_d20[RULE_L-1-84:0] ;
        rule_in1_d22  <= rule_in1_d21[RULE_L-1-88:0] ;
        rule_in1_d23  <= rule_in1_d22[RULE_L-1-92:0] ;
        rule_in1_d24  <= rule_in1_d23[RULE_L-1-96:0] ;
        rule_in1_d25  <= rule_in1_d24[RULE_L-1-100:0];
        rule_in1_d26  <= rule_in1_d25[RULE_L-1-104:0];
        rule_in1_d27  <= rule_in1_d26[RULE_L-1-108:0];
        rule_in1_d28  <= rule_in1_d27[RULE_L-1-112:0];
        rule_in1_d29  <= rule_in1_d28[RULE_L-1-116:0];
        rule_in1_d30  <= rule_in1_d29[RULE_L-1-120:0];
        rule_in1_d31  <= rule_in1_d30[RULE_L-1-124:0];
        rule_in1_d32  <= rule_in1_d31[RULE_L-1-128:0];
        rule_in1_d33  <= rule_in1_d32[RULE_L-1-132:0];
        rule_in1_d34  <= rule_in1_d33[RULE_L-1-136:0];
        rule_in1_d35  <= rule_in1_d34[RULE_L-1-140:0];
        rule_in1_d36  <= rule_in1_d35[RULE_L-1-144:0];
        rule_in1_d37  <= rule_in1_d36[RULE_L-1-148:0];
        rule_in1_d38  <= rule_in1_d37[RULE_L-1-152:0];
        rule_in1_d39  <= rule_in1_d38[RULE_L-1-156:0];
        rule_in1_d40  <= rule_in1_d39[RULE_L-1-160:0];
        rule_in1_d41  <= rule_in1_d40[RULE_L-1-164:0];
        rule_in1_d42  <= rule_in1_d41[RULE_L-1-168:0];
        rule_in1_d43  <= rule_in1_d42[RULE_L-1-172:0];
        rule_in1_d44  <= rule_in1_d43[RULE_L-1-176:0];
        rule_in1_d45  <= rule_in1_d44[RULE_L-1-180:0];
        rule_in1_d46  <= rule_in1_d45[RULE_L-1-184:0];
        rule_in1_d47  <= rule_in1_d46[RULE_L-1-188:0];
        rule_in1_d48  <= rule_in1_d47[RULE_L-1-192:0];
        rule_in1_d49  <= rule_in1_d48[RULE_L-1-196:0];
        rule_in1_d50  <= rule_in1_d49[RULE_L-1-200:0];
        rule_in1_d51  <= rule_in1_d50[RULE_L-1-204:0];
        rule_in1_d52  <= rule_in1_d51[RULE_L-1-208:0];
        rule_in1_d53  <= rule_in1_d52[RULE_L-1-212:0];
        rule_in1_d54  <= rule_in1_d53[RULE_L-1-216:0];
        rule_in1_d55  <= rule_in1_d54[RULE_L-1-220:0];
        rule_in1_d56  <= rule_in1_d55[RULE_L-1-224:0];
        rule_in1_d57  <= rule_in1_d56[RULE_L-1-228:0];
        rule_in1_d58  <= rule_in1_d57[RULE_L-1-232:0];
        rule_in1_d59  <= rule_in1_d58[RULE_L-1-236:0];
        rule_in1_d60  <= rule_in1_d59[RULE_L-1-240:0];
        rule_in1_d61  <= rule_in1_d60[RULE_L-1-244:0];
        rule_in1_d62  <= rule_in1_d61[RULE_L-1-248:0];
        rule_in1_d63  <= rule_in1_d62[RULE_L-1-252:0];

    end
end
assign rule_in1_0  =rule_in1    [RULE_L-1    :RULE_L- 4 ] ;  
assign rule_in1_1  =rule_in1_d1 [RULE_L-1- 4 :RULE_L- 8 ] ;  
assign rule_in1_2  =rule_in1_d2 [RULE_L-1- 8 :RULE_L-12 ] ;  
assign rule_in1_3  =rule_in1_d3 [RULE_L-1-12 :RULE_L-16 ] ;  
assign rule_in1_4  =rule_in1_d4 [RULE_L-1-16 :RULE_L-20 ] ;  
assign rule_in1_5  =rule_in1_d5 [RULE_L-1-20 :RULE_L-24 ] ;  
assign rule_in1_6  =rule_in1_d6 [RULE_L-1-24 :RULE_L-28 ] ;  
assign rule_in1_7  =rule_in1_d7 [RULE_L-1-28 :RULE_L-32 ] ;  
assign rule_in1_8  =rule_in1_d8 [RULE_L-1-32 :RULE_L-36 ] ;  
assign rule_in1_9  =rule_in1_d9 [RULE_L-1-36 :RULE_L-40 ] ; 
assign rule_in1_10 =rule_in1_d10[RULE_L-1-40 :RULE_L-44 ] ; 
assign rule_in1_11 =rule_in1_d11[RULE_L-1-44 :RULE_L-48 ] ; 
assign rule_in1_12 =rule_in1_d12[RULE_L-1-48 :RULE_L-52 ] ; 
assign rule_in1_13 =rule_in1_d13[RULE_L-1-52 :RULE_L-56 ] ; 
assign rule_in1_14 =rule_in1_d14[RULE_L-1-56 :RULE_L-60 ] ; 
assign rule_in1_15 =rule_in1_d15[RULE_L-1-60 :RULE_L-64 ] ; 
assign rule_in1_16 =rule_in1_d16[RULE_L-1-64 :RULE_L-68 ] ; 
assign rule_in1_17 =rule_in1_d17[RULE_L-1-68 :RULE_L-72 ] ; 
assign rule_in1_18 =rule_in1_d18[RULE_L-1-72 :RULE_L-76 ] ; 
assign rule_in1_19 =rule_in1_d19[RULE_L-1-76 :RULE_L-80 ] ; 
assign rule_in1_20 =rule_in1_d20[RULE_L-1-80 :RULE_L-84 ] ; 
assign rule_in1_21 =rule_in1_d21[RULE_L-1-84 :RULE_L-88 ] ; 
assign rule_in1_22 =rule_in1_d22[RULE_L-1-88 :RULE_L-92 ] ; 
assign rule_in1_23 =rule_in1_d23[RULE_L-1-92 :RULE_L-96 ] ; 
assign rule_in1_24 =rule_in1_d24[RULE_L-1-96 :RULE_L-100] ; 
assign rule_in1_25 =rule_in1_d25[RULE_L-1-100:RULE_L-104] ; 
assign rule_in1_26 =rule_in1_d26[RULE_L-1-104:RULE_L-108] ; 
assign rule_in1_27 =rule_in1_d27[RULE_L-1-108:RULE_L-112] ; 
assign rule_in1_28 =rule_in1_d28[RULE_L-1-112:RULE_L-116] ; 
assign rule_in1_29 =rule_in1_d29[RULE_L-1-116:RULE_L-120] ; 
assign rule_in1_30 =rule_in1_d30[RULE_L-1-120:RULE_L-124] ; 
assign rule_in1_31 =rule_in1_d31[RULE_L-1-124:RULE_L-128] ; 
assign rule_in1_32 =rule_in1_d32[RULE_L-1-128:RULE_L-132] ; 
assign rule_in1_33 =rule_in1_d33[RULE_L-1-132:RULE_L-136] ; 
assign rule_in1_34 =rule_in1_d34[RULE_L-1-136:RULE_L-140] ; 
assign rule_in1_35 =rule_in1_d35[RULE_L-1-140:RULE_L-144] ; 
assign rule_in1_36 =rule_in1_d36[RULE_L-1-144:RULE_L-148] ; 
assign rule_in1_37 =rule_in1_d37[RULE_L-1-148:RULE_L-152] ;
assign rule_in1_38 =rule_in1_d38[RULE_L-1-152:RULE_L-156] ;
assign rule_in1_39 =rule_in1_d39[RULE_L-1-156:RULE_L-160] ; 
assign rule_in1_40 =rule_in1_d40[RULE_L-1-160:RULE_L-164] ; 
assign rule_in1_41 =rule_in1_d41[RULE_L-1-164:RULE_L-168] ; 
assign rule_in1_42 =rule_in1_d42[RULE_L-1-168:RULE_L-172] ; 
assign rule_in1_43 =rule_in1_d43[RULE_L-1-172:RULE_L-176] ; 
assign rule_in1_44 =rule_in1_d44[RULE_L-1-176:RULE_L-180] ; 
assign rule_in1_45 =rule_in1_d45[RULE_L-1-180:RULE_L-184] ; 
assign rule_in1_46 =rule_in1_d46[RULE_L-1-184:RULE_L-188] ; 
assign rule_in1_47 =rule_in1_d47[RULE_L-1-188:RULE_L-192] ; 
assign rule_in1_48 =rule_in1_d48[RULE_L-1-192:RULE_L-196] ; 
assign rule_in1_49 =rule_in1_d49[RULE_L-1-196:RULE_L-200] ; 
assign rule_in1_50 =rule_in1_d50[RULE_L-1-200:RULE_L-204] ; 
assign rule_in1_51 =rule_in1_d51[RULE_L-1-204:RULE_L-208] ; 
assign rule_in1_52 =rule_in1_d52[RULE_L-1-208:RULE_L-212] ; 
assign rule_in1_53 =rule_in1_d53[RULE_L-1-212:RULE_L-216] ; 
assign rule_in1_54 =rule_in1_d54[RULE_L-1-216:RULE_L-220] ; 
assign rule_in1_55 =rule_in1_d55[RULE_L-1-220:RULE_L-224] ; 
assign rule_in1_56 =rule_in1_d56[RULE_L-1-224:RULE_L-228] ; 
assign rule_in1_57 =rule_in1_d57[RULE_L-1-228:RULE_L-232] ; 
assign rule_in1_58 =rule_in1_d58[RULE_L-1-232:RULE_L-236] ; 
assign rule_in1_59 =rule_in1_d59[RULE_L-1-236:RULE_L-240] ; 
assign rule_in1_60 =rule_in1_d60[RULE_L-1-240:RULE_L-244] ; 
assign rule_in1_61 =rule_in1_d61[RULE_L-1-244:RULE_L-248] ; 
assign rule_in1_62 =rule_in1_d62[RULE_L-1-248:RULE_L-252] ; 
assign rule_in1_63 =rule_in1_d63[RULE_L-1-252:RULE_L-256] ; 

endmodule    
